// 1. 按需导入 API 接口
import { getUserAPI } from '@/api/user.js'

// 用户信息相关的 Vuex 模块
export default {
  // 为模块开启命名空间
  namespaced: true,
  // 在模块中，state 需要是函数，return 一个数据对象
  state() {
    return {
      // 登录成功之后，token 的值
      token: '',
      // 用户的基本信息
      user: {}
    }
  },
  // 函数，用来修改全局的数据
  mutations: {
    // 更新 token 的值
    updateToken(state, token) {
      state.token = token
    },
    // 3. 更新 vuex 中的 user 数据
    updateUser(state, obj) {
      state.user = obj
    }
  },
  // 异步操作
  actions: {
    // 2. 封装获取用户信息的 action 函数
    async initUser(ctx) {
      // 2.1 调用接口，获取用户的信息
      const { data: res } = await getUserAPI()
      // 2.2 判断接口是否调用成功
      if (res.code === 0) {
        // TODO：调用 mutation 函数，转存数据到 state 中
        ctx.commit('updateUser', res.data)
      }
    }
  }
}
